import router from '@/router/index'
import {LOGIN_URL} from "@/config";
import {RouteRecordRaw} from "vue-router";
import {useAuthStore} from "@/stores/modules/auth";

// 引入 views 文件夹下所有 vue 文件
const modules = import.meta.glob("@/views/**/*.vue");
/**
 * @description 初始化动态路由
 */
export const initDynamicRouter = async () => {
  const authStore = useAuthStore();
  try {
    // 获取菜单列表
    await authStore.getAuthMenuList();
    // 添加动态路由
    authStore.flatMenuListGet.forEach(item => {
      item.children && delete item.children;
      if (item.component && typeof item.component == 'string') {
        item.component = modules['src/views' + item.children + '.vue']
      }
      if (item.meta.isFull) {
        router.addRoute(item as unknown as RouteRecordRaw)
      } else {
        router.addRoute('layout', item as unknown as RouteRecordRaw)
      }
    })
  } catch (error) {
    // 当按钮 || 菜单请求出错时，重定向到登陆页
    await router.replace(LOGIN_URL)
    return Promise.reject(error)
  }
}
